package com.zijidelu.luframework.utils.lang.reflect;

/**
 * @author ZIJIDELU
 * @datetime 2025/11/14 19:33
 */
public class ClassUtil {

    /**
     * 在类的继承链中，查找第一个实现了指定接口的父类。
     *
     * @param startClass      开始查找的类
     * @param targetInterface 要查找的目标接口
     * @return 第一个实现了目标接口的父类。如果未找到，返回 null。
     */
    public static Class<?> findFirstParentImplementing(Class<?> startClass, Class<?> targetInterface) {
        Class<?> currentClass = startClass.getSuperclass();

        while (currentClass != null && currentClass != Object.class) {
            if (targetInterface.isAssignableFrom(currentClass)) {
                return currentClass;
            }
            currentClass = currentClass.getSuperclass();
        }

        return null;
    }
}
